#ifndef QSTACKED_MANAGE_BASE
#define QSTACKED_MANAGE_BASE

#include <QWidget>
#include <QBaseLib.h>
#include "QWidgetBase.h"

class QStackedFrameBase;
class QStackedManageBase : public QWidgetBase
{
    Q_OBJECT
public:
	/**
     * 初始化构造函数
     *
     * @param -
     * @note -
     * @return -
     */
    explicit QStackedManageBase(QWidgetBase *parent = nullptr);

	/**
     * 析构函数
     *
     * @param -
     * @note -
     * @return -
     */
    virtual ~QStackedManageBase();

	/**
     * 显示帧视图
     *
     * @param -
     * @note -
     * @return -
     */
    QStackedFrameBase* showFrameLayout(QString layout);

	/**
     * 添加帧视图
     *
     * @param -
     * @note -
     * @return -
     */
    void addFrameLayout(QString layout,QStackedFrameBase *frameLayout);
	/**
     * 删除帧视图
     *
     * @param -
     * @note -
     * @return -
     */
    bool deleteFrameLayout(QString layout,QString frameLayout = "");

	/**
     * 判断视图是否存在
     *
     * @param -
     * @note -
     * @return -
     */
    bool isFrameLayoutExist(QString layout);

public:
	/**
     * 启动定时器
     *
     * @param -
     * @note -
     * @return -
     */
    void timerStart(int timeMs);

	/**
     * 停止定时器
     *
     * @param -
     * @note -
     * @return -
     */
    void timerStop();

private slots:

	/**
     * 定时器信息
     *
     * @param -
     * @note -
     * @return -
     */
	void slotsTimerOut();

public:
    // 创建初始化UI
    void initUI();
    // 初始化样式
    void initStyleSheet();
    // 初始化连接
    void initConnect();

public:
	// 页面启动
    void onStart();
    // 页面停止
    void onStop();

private:
    // 管理多个布局
    QStackedLayout	  *m_pQStackedLayout = nullptr ;
    // 保存布局信息
    QMap<QString,QWidget*>  m_QStackedMap;
    // 超时定时器
    QTimer			  *m_pQTimer = nullptr;

public:
    // 帧视图管理类
    QStackedManageBase *m_ManageBase = nullptr;
};


#endif // QSTACKED_MANAGE_BASE
